package cn.fansunion.concurrent.map;

import java.util.HashMap;
import java.util.UUID;

/**
 * HashMap多线程并发环境下，会死循环，链表 http://ifeve.com/hashmap-infinite-loop/ 链表的闭环所致。
 * 
 * 最终,这并不是 HashMap 的问题,是使用场景的不当,在并发情况下选择非线程 安全的容器是没有保障的。
 * 
 * JDK1.5,JDK1.8没复现
 * 
 * @author leiwen1
 *
 */
public class HashMapInfiniteLoopTest {

	public static void main(String[] args) throws InterruptedException {
		final HashMap<String, String> map = new HashMap<String, String>(2);

		Thread t = new Thread(new Runnable() {

			public void run() {

				for (int i = 0; i < 10000; i++) {

					new Thread(new Runnable() {

						public void run() {

							map.put(UUID.randomUUID().toString(), "");

						}

					}, "ftf" + i).start();

				}

			}

		}, "ftf");

		t.start();

		t.join();

	}

}
